package vista;
import com.toedter.calendar.JDateChooser;

import controlador.ControladorRegistrarPieza;

import java.awt.BorderLayout;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollBar;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Date;

import javax.swing.WindowConstants;
import javax.swing.border.BevelBorder;
import javax.swing.table.AbstractTableModel;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableModel;
import javax.swing.SwingUtilities;


/**
 * This code was edited or generated using CloudGarden's Jigloo
 * SWT/Swing GUI Builder, which is free for non-commercial
 * use. If Jigloo is being used commercially (ie, by a corporation,
 * company or business for any purpose whatever) then you
 * should purchase a license for each developer using Jigloo.
 * Please visit www.cloudgarden.com for details.
 * Use of Jigloo implies acceptance of these licensing terms.
 * A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
 * THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
 * LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
 */
public class VentanaRegistrarPieza extends javax.swing.JFrame {



	private JPanel panPieza;
	private JLabel lblFecha;
	private JButton btnGuardarLote;
	private JPanel panTablaPieza;
	private JLabel lblBs;
	private JTextField txtPiezasPorRegis;
	private JLabel lblPorRegistrar;
	private JLabel lblDescripcionP;
	private JTextField txtDescPieza;
	private JLabel lblDescripcion;
	private JTextField txtDescripcion;
	private JLabel lblPrecio;
	private JDateChooser fechaPieza;
	private JDateChooser fechaLote;
	private JTextField txtPrecio;
	private JTable tblPieza;
	private JScrollPane jscPieza;
	private JTextField txtCantPiezas;
	private JLabel lblCantPieza;
	private JButton btnBuscarCodLote;
	private JTextField txtCodLote;
	private JLabel lblCodigoLote;
	private JPanel panLote;
	private JButton btnCancelar;
	private JLabel lblFechaExpd;
	private JButton btnGuardarPieza;
	private JLabel lblKg;
	private JTextField txtPeso;
	private JLabel lblPesoPieza;
	private JTextField txtCodPieza;
	private JLabel lblCodPieza;
	private JPanel panRegPieza;
	private JButton btnAlmacenar;
	private ControladorRegistrarPieza controladorRegPieza;

	/**
	 * Auto-generated main method to display this JFrame
	 */




	/*PATRON SINGLENTON*/

	private static VentanaRegistrarPieza instanciaPieza;

	public static  VentanaRegistrarPieza getInstancia(ControladorRegistrarPieza controladorRegPieza) {
		if (instanciaPieza == null)
			instanciaPieza = new VentanaRegistrarPieza(controladorRegPieza);
		else{
			instanciaPieza.limpiarCamposPieza();
			instanciaPieza.limpiarCamposLote();		
		}
		return instanciaPieza;
	}


	public VentanaRegistrarPieza(ControladorRegistrarPieza controladorRegPieza) {
		super();
		this.controladorRegPieza = controladorRegPieza;
		initGUI();
	}




	public void agregarListener(ActionListener accion){

		btnCancelar.addActionListener(accion);
		btnAlmacenar.addActionListener(accion);
		btnGuardarLote.addActionListener(accion);
		btnGuardarPieza.addActionListener(accion);
		btnBuscarCodLote.addActionListener(accion);
	}



	/**************************SET Y GET BOTONES***************************/
	public JButton getBtnGuardarLote() {
		return btnGuardarLote;
	}

	public void setBtnGuardarLote(JButton btnGuardarLote) {
		this.btnGuardarLote = btnGuardarLote;
	}


	public JButton getBtnCancelar() {
		return btnCancelar;
	}

	public void setBtnCancelar(JButton btnCancelar) {
		this.btnCancelar = btnCancelar;
	}

	public JButton getBtnGuardarPieza() {
		return btnGuardarPieza;
	}

	public void setBtnGuardarPieza(JButton btnGuardarPieza) {
		this.btnGuardarPieza = btnGuardarPieza;
	}

	public JButton getBtnAlmacenar() {
		return btnAlmacenar;
	}
	public void setBtnAlmacenar(JButton btnAlmacenar) {
		this.btnAlmacenar = btnAlmacenar;
	}

	
	public JButton getBtnBuscarCodLote() {
		return btnBuscarCodLote;
	}


	public void setBtnBuscarCodLote(JButton btnBuscarCodLote) {
		this.btnBuscarCodLote = btnBuscarCodLote;
	}


	/**************SET Y GET DE LOS CAMPOS**************/
	public void setCodLote(String cod){
		txtCodLote.setText(cod);
	}

	public String getCodLote(){
		return txtCodLote.getText();
	}

	public void setDescripcion(String ced){
		txtDescripcion.setText(ced);
	}

	public String getDescripcion(){
		return txtDescripcion.getText();
	}

	//METODOS PARA ASIGNAR Y OBTENER LA FECHA
	public void setFechaLote(Date fech){
		fechaLote.setDate(fech);
	}

	public void setFechaPieza(Date f){
		fechaPieza.setDate(f);
	}

	public Date getFechaLote(){
		return fechaLote.getDate();
	}

	public Date  getFechaPieza(){
		return fechaPieza.getDate();
	}

	public void setCantLote(int cant){
		txtCantPiezas.setText(String.valueOf(cant));
	}

	public int getCantLote(){
		return Integer.valueOf(txtCantPiezas.getText());
	}

	public void setCodPieza(String cod){
		txtCodPieza.setText(cod);
	}

	public String getCodPieza(){
		return txtCodPieza.getText();
	}

	public void setDescPieza(String cod){
		txtDescPieza.setText(cod);
	}

	public String getDescPieza(){
		return txtDescPieza.getText();
	}

	public void setPrecio(float pr){
		txtPrecio.setText(String.valueOf(pr));
	}

	public float getPrecio(){
		return Float.valueOf(txtPrecio.getText());
	}

	public void setPeso(float p){
		txtPeso.setText(String.valueOf(p));
	}

	public float getPeso(){
		return Float.valueOf(txtPeso.getText());
	}

	public void setCantFaltante(int cant){
		txtPiezasPorRegis.setText(String.valueOf(cant));
	}

	public int getCantFaltante(){
		return Integer.valueOf(txtPiezasPorRegis.getText());
	}

	//MOSTRAR MENSAJE
	public void mostrarMensaje(String mensaje) {
		// TODO Auto-generated method stub
		JOptionPane.showMessageDialog(this, mensaje,"",JOptionPane.INFORMATION_MESSAGE);

	}

	//TABLA ABSTRACTA
	public void setListado(AbstractTableModel abstractTableModel){
		tblPieza.setModel(abstractTableModel);
	}


	//BLOQUEAR O DESBLOQUEAR CAMPOS LOTE
	public void HabilitarCampos(boolean v){

		txtCodLote.setEnabled(v);
		txtCantPiezas.setEnabled(v);
		txtDescripcion.setEnabled(v);
		fechaLote.setEnabled(v);

	}
	
	public void HabilitarCamp(boolean v){

		txtCantPiezas.setEnabled(v);
		txtDescripcion.setEnabled(v);
		fechaLote.setEnabled(v);

	}
	
	
	

	//BLOQUEAR O DESBLOQUEAR CAMPOS DE PIEZA
	public void HabilitarCamposPiezas(boolean v){
		txtCodPieza.setEnabled(v);
		txtDescPieza.setEnabled(v);
		txtPeso.setEnabled(v);
		txtPrecio.setEnabled(v);
		fechaPieza.setEnabled(v);

	}

	/*****************************VALIDAR CAMPOS LLENOS*****************/
	public Boolean validarLote(){

		if (txtCodLote.getText().isEmpty()== true){
			mostrarMensaje("	Ingrese codigo_lote");		
			return false;
		}
		else
			if(txtDescripcion.getText().isEmpty()== true){
				mostrarMensaje("	Ingrese la descripcion")	;
				return false;
			}	
			else
				if(txtCantPiezas.getText().isEmpty()== true){
					mostrarMensaje("	Ingrese la cantidad de piezas");
					return false;
				}

				else
					return true;	

	}


	public Boolean validarPieza(){
		if (txtCodPieza.getText().isEmpty()== true){
			mostrarMensaje("	Ingrese codigo de la pieza");		
			return false;
		}
		else
			if(txtDescPieza.getText().isEmpty()== true){
				mostrarMensaje("	Ingrese la descripcion");
				return false;
			}	
			else
				if(txtPeso.getText().isEmpty()== true){
					mostrarMensaje("	Ingrese el peso de la pieza");
					return false;
				}
				else
					if(txtPrecio.getText().isEmpty()== true){
						mostrarMensaje("	Ingrese el precio");
						return false;
					}

					else
						return true;	



	}

	/**********************************LIMPIAR CAMPOS********************************/
	public void limpiarCamposPieza(){
		txtCodPieza.setText("");
		txtDescPieza.setText("");
		txtPrecio.setText("");
		txtPeso.setText("");
		fechaPieza.setDate(null);
	}

	public void limpiarCamposLote(){
		txtCodLote.setText("");
		txtDescripcion.setText("");
		txtCantPiezas.setText("");
		fechaLote.setDate(null);

	}

	{
		//Set Look & Feel
		try {
			javax.swing.UIManager.setLookAndFeel("javax.swing.plaf.metal.MetalLookAndFeel");
		} catch(Exception e) {
			e.printStackTrace();
		}
	}


	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			{
				panPieza = new JPanel();
				getContentPane().add(panPieza, BorderLayout.CENTER);
				panPieza.setLayout(null);
				panPieza.setPreferredSize(new java.awt.Dimension(517, 364));
				panPieza.setBackground(new java.awt.Color(255,255,255));
				this.setTitle("Entradas");
				{
					btnCancelar = new JButton();
					panPieza.add(btnCancelar);
					btnCancelar.setText("Cancelar");
					btnCancelar.setBounds(329, 492, 100, 22);
				}
				{
					btnAlmacenar = new JButton();
					panPieza.add(btnAlmacenar);
					btnAlmacenar.setText("Almacenar");
					btnAlmacenar.setBounds(61, 492, 100, 22);
				}
				{
					panRegPieza = new JPanel();
					panPieza.add(panRegPieza);
					panRegPieza.setVisible(true);
					panRegPieza.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
					panRegPieza.setLayout(null);
					panRegPieza.setBounds(27, 179, 436, 193);
					panRegPieza.setBackground(new java.awt.Color(247,247,247));
					panRegPieza.setBorder(BorderFactory.createTitledBorder("Registrar pieza")); // TITULO AL PAN PIEZA

					{
						lblCodPieza = new JLabel();
						panRegPieza.add(lblCodPieza);
						lblCodPieza.setText("Codigo Pieza: ");
						lblCodPieza.setBounds(27, 56, 90, 14);
					}
					{
						txtCodPieza = new JTextField();
						panRegPieza.add(txtCodPieza);
						txtCodPieza.setBounds(117, 52, 54, 20);
					}
					{
						lblPesoPieza = new JLabel();
						panRegPieza.add(lblPesoPieza);
						lblPesoPieza.setText("Peso: ");
						lblPesoPieza.setBounds(27, 142, 46, 14);
					}
					{
						txtPeso = new JTextField();
						panRegPieza.add(txtPeso);
						txtPeso.setBounds(119, 139, 54, 21);
						txtPeso.addKeyListener(new KeyAdapter() {
							public void keyTyped(KeyEvent evt) {
								char car = evt.getKeyChar();
								if((car<'.' || car>'9' )) evt.consume();

								//TODO a.keyTyped
							}
						});
					}
					{
						lblKg = new JLabel();
						panRegPieza.add(lblKg);
						lblKg.setText("Kgs");
						lblKg.setBounds(182, 142, 28, 14);
					}
					{
						btnGuardarPieza = new JButton();
						panRegPieza.add(btnGuardarPieza);
						btnGuardarPieza.setText("Agregar");
						//	btnGuardarPieza.setActionCommand("Guardar Pieza");
						btnGuardarPieza.setBounds(310, 156, 81, 21);

					}
					{
						lblFechaExpd = new JLabel();
						panRegPieza.add(lblFechaExpd);
						lblFechaExpd.setText("Fecha sacrificio: ");
						lblFechaExpd.setBounds(210, 53, 100, 20);
					}
					{
						txtPrecio = new JTextField();
						panRegPieza.add(txtPrecio);
						txtPrecio.setBounds(119, 113, 54, 20);
						txtPrecio.addKeyListener(new KeyAdapter() {
							public void keyTyped(KeyEvent evt) {
								char car = evt.getKeyChar();
								if((car<'.' || car>'9' )) evt.consume();

								//TODO a.keyTyped
							}
						});
					}
					{
						fechaPieza = new JDateChooser();
						panRegPieza.add(fechaPieza);
						fechaPieza.setBounds(315, 55, 95, 20);
					}
					{
						lblPrecio = new JLabel();
						panRegPieza.add(lblPrecio);
						panRegPieza.add(getJTextField1());
						panRegPieza.add(getLblDescripcionP());
						panRegPieza.add(getLblPorRegistrar());
						panRegPieza.add(getTxtPiezasPorRegis());
						panRegPieza.add(getLblBs());
						lblPrecio.setText("Precio:");
						lblPrecio.setBounds(27, 115, 45, 16);
					}
				}
				{
					panLote = new JPanel();
					panPieza.add(panLote);
					panLote.setVisible(true);
					panLote.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
					panLote.setLayout(null);
					panLote.setBounds(22, 12, 447, 148);
					panLote.setBackground(new java.awt.Color(247,247,247));
					panLote.setBorder(BorderFactory.createTitledBorder("Registrar lote")); //TITULO AL PANEL
					{
						lblCodigoLote = new JLabel();
						panLote.add(lblCodigoLote);
						lblCodigoLote.setText("Codigo Lote:");
						lblCodigoLote.setBounds(14, 29, 75, 14);
					}
					{
						txtCodLote = new JTextField();
						panLote.add(txtCodLote);
						txtCodLote.setBounds(125, 26, 85, 19);
					}
					{
						btnBuscarCodLote = new JButton();
						panLote.add(btnBuscarCodLote);
						btnBuscarCodLote.setText("Buscar");
						btnBuscarCodLote.setBounds(222, 26, 79, 21);

					}
					{
						lblCantPieza = new JLabel();
						panLote.add(lblCantPieza);
						lblCantPieza.setText("Cantidad Piezas: ");
						lblCantPieza.setBounds(14, 116, 106, 14);
					}
					{
						txtCantPiezas = new JTextField();
						panLote.add(txtCantPiezas);
						txtCantPiezas.setBounds(125, 113, 42, 21);
						txtCantPiezas.setEnabled(false);
						txtCantPiezas.addKeyListener(new KeyAdapter() {
							public void keyTyped(KeyEvent evt) {
								char car = evt.getKeyChar();
								if(txtCantPiezas.getText().length()>=2) evt.consume();
								if((car<'0' || car>'9' )) evt.consume();

								//TODO a.keyTyped
							}
						});
					}
					{
						btnGuardarLote = new JButton();
						panLote.add(btnGuardarLote);
						btnGuardarLote.setText("Registrar");
						//	btnGuardarLote.setActionCommand("Guardar Lote");
						btnGuardarLote.setBounds(313, 113, 87, 21);

					}
					{
						lblFecha = new JLabel();
						panLote.add(lblFecha);
						lblFecha.setText("Fecha de entrada: ");
						lblFecha.setBounds(14, 87, 107, 17);
					}
					{
						fechaLote = new JDateChooser();
						panLote.add(fechaLote);
						panLote.add(getTxtDescripcion());
						panLote.add(getLblDescripcion());
						fechaLote.setBounds(125, 87, 102, 20);
						fechaLote.setEnabled(false);
					}
				}
				{
					panTablaPieza = new JPanel();
					panPieza.add(panTablaPieza);
					panTablaPieza.setLayout(null);
					panTablaPieza.setBounds(27, 378, 442, 108);
					panTablaPieza.setBorder(BorderFactory.createEtchedBorder(BevelBorder.LOWERED));
					panTablaPieza.setBackground(new java.awt.Color(247,247,247));
					{
						jscPieza = new JScrollPane();
						panTablaPieza.add(jscPieza);
						jscPieza.setBounds(2, 8, 438, 91);
						{
							TableModel tblPiezaModel = 
									new DefaultTableModel(new String[] {"Codigo pieza","Kgs","Precio","Fecha sacrificio"  },0);
							tblPieza = new JTable();
							jscPieza.setViewportView(tblPieza);
							tblPieza.setBounds(14, 41, 420, 117);
							tblPieza.setPreferredSize(new java.awt.Dimension(420, 103));
							tblPieza.setModel(tblPiezaModel);
						}
					}
				}
			}
			pack();
			this.setSize(512, 559);
		} catch (Exception e) {
			//add your error handling code here
			e.printStackTrace();
		}
	}






	private JTextField getTxtDescripcion() {
		if(txtDescripcion == null) {
			txtDescripcion = new JTextField();
			txtDescripcion.setBounds(125, 56, 176, 20);
			txtDescripcion.setEnabled(false);
			txtDescripcion.addKeyListener(new KeyAdapter() {

				public void keyTyped(KeyEvent evt) {
					char car = evt.getKeyChar();   
					if((car<'a' || car>'z') && (car<'A' || car>'Z')
							&& (car!=(char)KeyEvent.VK_SPACE))
					{
						evt.consume();
					}
					//TODO add your code for txtApellidosCliente.keyTyped
				}
			});

		}
		return txtDescripcion;
	}

	private JLabel getLblDescripcion() {
		if(lblDescripcion == null) {
			lblDescripcion = new JLabel();
			lblDescripcion.setText("Descripcion: ");
			lblDescripcion.setBounds(14, 58, 74, 16);
		}
		return lblDescripcion;
	}

	private JTextField getJTextField1() {
		if(txtDescPieza == null) {
			txtDescPieza = new JTextField();
			txtDescPieza.setBounds(117, 87, 175, 20);
			txtDescPieza.addKeyListener(new KeyAdapter() {

				public void keyTyped(KeyEvent evt) {
					char car = evt.getKeyChar();   
					if((car<'a' || car>'z') && (car<'A' || car>'Z')
							&& (car!=(char)KeyEvent.VK_SPACE))
					{
						evt.consume();
					}
					//TODO add your code for txtApellidosCliente.keyTyped
				}
			});

		}
		return txtDescPieza;
	}

	private JLabel getLblDescripcionP() {
		if(lblDescripcionP == null) {
			lblDescripcionP = new JLabel();
			lblDescripcionP.setText("Descripcion:");
			lblDescripcionP.setBounds(27, 89, 78, 16);
		}
		return lblDescripcionP;
	}

	private JLabel getLblPorRegistrar() {
		if(lblPorRegistrar == null) {
			lblPorRegistrar = new JLabel();
			lblPorRegistrar.setText("Piezas por registrar:");
			lblPorRegistrar.setBounds(244, 31, 116, 16);
		}
		return lblPorRegistrar;
	}

	private JTextField getTxtPiezasPorRegis() {
		if(txtPiezasPorRegis == null) {
			txtPiezasPorRegis = new JTextField();
			txtPiezasPorRegis.setBounds(366, 29, 44, 20);
			txtPiezasPorRegis.setEnabled(false);
			txtPiezasPorRegis.setForeground(new java.awt.Color(15,15,15));
		}
		return txtPiezasPorRegis;
	}
	
	private JLabel getLblBs() {
		if(lblBs == null) {
			lblBs = new JLabel();
			lblBs.setText("Bs");
			lblBs.setBounds(179, 115, 15, 16);
		}
		return lblBs;
	}

}
